flow
builder, 如下 emit 一連串的整數fun exampleFlow(): Flow<Int> = flow {
for (i in 1..100) {
delay(1000) // Simulate long-running task
emit(i) // Emit next value
}
}
collect
function 接收這些 emit 的 valuefun main() = runBlocking {
exampleFlow().collect { value ->
println("Received value: $value")
}
}
collect 函數是一個 suspend function, 用來從 stream 中收集已發出的 values. 允許在每個值釋出時對其執行動作. 可在此處理從 flow 接收到的資料,例如更新 UI 或進一步處理資料.
map
: transforms 每一個 emitted 的 value.filter
: 基於給定的 condition 過濾 emitted 的values.zip
: 結合多個 flow 成單一的 flow.onStart
, onCompletion
: 讓你在 start 開始或完成時執行動作.exampleFlow()
.map { it * 2 } // Double each value
.collect { println(it) }
catch
operator 處裡在 flow 執行時發生的異常.exampleFlow()
.catch { e -> println("Error: $e") }
.collect { println(it) }